package LMS.db;

import LMS.domain.BookEntity;
import LMS.domain.BookItem;

import java.util.List;

public interface BookItemRepository {

    /**
     * 查找图书副本
     *
     * @param bookItemId
     *      图书副本id
     * @return
     *      对应的图书副本
     */
    BookItem findBookItem(long bookItemId);

    /**
     * 查找图书副本
     *
     * @param bookCode
     *      图书编码。不是isbn
     * @return
     *      对应图书副本
     */
    BookItem findBookItem(String bookCode);

    /**
     * 查找所有的图书副本
     *
     * @param bookId
     *      图书id
     * @return
     *      图书副本列表
     */
    List<BookItem> findBookItems(long bookId);

    /**
     * 修改图书信息
     *
     * @param location
     *      书架位置
     * @param id
     *      图书副本id
     * @return
     *      更新后的图书副本
     */
    BookItem modifyInfo( String location,long id);

    /**
     * 更新出库状态
     *
     * @param bookItemId
     */
    void getOut(long bookItemId);

    /**
     * 更新还书状态
     *
     * @param bookCode
     *      图书编码
     * @return
     *      还书是否成功
     */
    boolean returnBook(String bookCode);

    /**
     * 添加一个图书副本
     *
     * @param bookCode
     *      图书编码
     * @param bookId
     *      图书id
     */
    void addBookItem(String bookCode,long bookId);

    /**
     * 删除图书副本
     *
     * @param bookItemId
     *      图书副本id
     */
    void deleteBookItem(long bookItemId);

    /**
     * 查询图书副本数量
     *
     * @param bookId
     *      图书id
     * @return
     *      数量
     */
    long getBookItemCount(long bookId);

}
